#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>

void *thmain1(void *arg); // 线程1的主函数

int main(int argc, char *argv[])
{
    pthread_t thid1 = 0;

    pthread_attr_t attr;                                            // 声明线程属性的数据结构
    pthread_attr_init(&attr);                                       // 初始化
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);    // 设置线程的属性
    if (pthread_create(&thid1, &attr, thmain1, NULL) != 0)
    {
        printf("pthread_create failed.\n");
        exit(-1);
    }
    pthread_attr_destroy(&attr);                                    // 销毁数据结构

    // pthread_detach(thid1);

    sleep(5);

    void *ret;
    // 等待子线程退出。
    printf("join...\n");
    int result = 0;             // 用于存放join的返回值
    result = pthread_join(thid1, &ret);
    printf("thid1 result=%d,ret=%ld\n", result,ret);
    printf("join ok.\n");
}

void *thmain1(void *arg)
{
    // pthread_detach(pthread_self());
    for(int i = 0; i < 3; ++i){
        sleep(1);
        printf("pthmain1 sleep(%d) ok.\n", i+1);
    }
    return (void*)1;
}
